/**
 * 53. 最大子数组和
 * 给你一个整数数组 numbs ，请你找出一个具有最大和的连续子数组（子数组最少包含一个元素），返回其最大和。
 * 子数组 是数组中的一个连续部分。
 * 输入：numbs = [-2,1,-3,4,-1,2,1,-5,4]
 * 输出：6
 * 解释：连续子数组 [4,-1,2,1] 的和最大，为 6 。
 */
fn max_sub_array(numbs: Vec<i32>) -> i32 {
    let mut max = numbs[0];
    let mut sum = 0;
    for i in numbs {
        if sum < 0 {
            sum = i;
        } else {
            sum += i;
        }
        max = if max > sum { max } else { sum };
    }
    max
}

mod test {
    use crate::leetcode::max_subarray_53::max_sub_array;
    #[test]
    fn test() {
        let numbs = vec![-2, 1, -3, 4, -1, 2, 1, -5, 4];
        let max = max_sub_array(numbs);
        assert_eq!(6, max);
    }
}
